package com.deluxelx.soul.inn.service.question;

import com.baomidou.mybatisplus.extension.service.IService;
import com.deluxelx.soul.inn.bean.question.*;
import com.deluxelx.soul.inn.common.param.CollectedParam;

import java.util.List;

/**
 * 问答接口类
 *
 * @author: zihao.liao
 * @date: 2024/1/16 17:23
 */
public interface QuestionService extends IService<Question> {
    /**
     * 查询首页问答列表
     *      问答标题，截断长度为14
     * @return List<QuestionVO> 首页问答列表
     */
    List<QuestionVO> fetchIndexQuestionList();
    /**
     * 根据关键字查询问答列表
     *
     * @param keyword 关键字
     * @return 问答列表
     **/
    List<QuestionVO> fetchSearchQuestionList(String keyword);
    /**
     * 获取问答列表
     *
     * @return 问答列表
     **/
    List<QuestionVO> fetchQuestionList();
    /**
     * 获取我的问答列表
     *
     * @param userId 用户id
     * @return 我的问答列表
     **/
    List<QuestionVO> fetchMyQuestionList(String userId);

    /**
     * 获取我的点赞列表
     * @param userId 用户id
     * @return 点赞列表
     */
    List<QuestionVO> fetchMyFollowQuestionList(String userId);
    /**
     * 获取标签列表
     *
     * @return 标签列表
     **/
    List<Tag> fetchTagList();
    /**
     * 新增我的问答
     *
     * @param questionParam 问答参数
     * @return 是否添加成功
     **/
    Boolean addMyQuestion(QuestionParam questionParam);
    /**
     * 获取问答详情
     *
     * @param questionId 心理问答id
     * @return 问答详情
     **/
    QuestionDetailVO fetchQuestionDetail(String questionId);
    /**
     * 新增回答
     *
     * @param answerParam 前端传参
     * @return 结果
     **/
    Boolean addAnswer(AnswerParam answerParam);
    /**
     * 获取回答列表
     * @param questionId 心理回答Id
     * @return 回答列表
     */
    List<AnswerVO> fetchAnswerList(String questionId);
    /**
     * 删除我的心理提问
     * @param questionId 心理回答Id
     * @return 是否删除成功
     */
    Boolean removeMyQuestion(String questionId);
    /**
     * 删除我的回答
     * @param answerId 回答Id
     * @return 是否删除成功
     */
    Boolean removeMyAnswer(String answerId);
    /**
     * 查看该用户是否点赞此心理问答
     * @param param 前端传参
     * @return 结果
     */
    Boolean isLikeQuestion(CollectedParam param);
    /**
     * 该用户点赞心理问答
     * @param param 前端传参
     * @return 结果
     */
    Boolean likeQuestion(CollectedParam param);
    /**
     * 该用户取消点赞心理问答
     * @param param 前端传参
     * @return 结果
     */
    Boolean unLikeQuestion(CollectedParam param);
}
